Context-based reverse geocoding

ABSTRACT

In general, in one aspect, a mobile device can perform reverse geocoding based on context, in addition to latitude and longitude coordinates. The reverse geocoding can be used to determine in which geofence among multiple geofences the mobile device is located. Thus, the mobile device can be associated with a street address, a postal code, a named land feature, or a commercial, cultural, or political entity associated with the geofence. The context can include a pattern of movement, as well as an accuracy of the latitude and longitude coordinates. Information in the context can be compared to selection criteria of the geofence. A geofence having selection criteria that match the context the best can be selected.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional of and claims priority to U.S.Provisional Patent Application Ser. No. 12/764,057, filed on Apr. 20,2010, the entire contents of which are hereby incorporated by reference.

TECHNICAL FIELD

This disclosure relates generally to location-based processing on amobile device.

BACKGROUND

Geocoding is a process of finding geographic coordinates (oftenexpressed as latitude and longitude) that can be associated with othergeographic data, such as a street address, a postal code, or a namedland feature. Reverse geocoding can include finding geographic data,e.g., a street address, a postal code, or a named land feature to beassociated with given geographic coordinates.

A mobile device, such as a smart phone, can include various hardware andsoftware for determining current geographic coordinates of the mobiledevice, which can be used to identify geographic data (e.g., streetaddress) of the mobile device through reverse geocoding. The currentgeographic coordinates determined by the mobile device can have variouslevels of accuracy. For example, a mobile device can include a receiverand software for determining a location using a global positioningsystem (e.g., a GPS system). GPS accuracy can be affected by a number offactors, including satellite positions, noise in a GPS signal,atmospheric conditions, and natural barriers between a GPS signal sourceand the mobile device. Noise can create an error between 1 to 10 meters.Objects such a mountains or buildings between a GPS satellite and themobile device can also produce errors, sometimes up to 30 meters. Themost accurate determination of position occurs when the satellite andreceiver have a clear view of each other and no other objects interfere.However, a clear view is not always possible, for example, when themobile device is located in a downtown area of a city where numeroushigh-rise buildings are present. In addition to GPS, the mobile devicecan use other technologies to determine the geographic coordinates, forexample, by triangulating signals from wireless communications gateways,such as cellular signals from various cell towers of a cellularcommunications network. Like the GPS system, triangulating cellularsignals or WiFi™ signals can produce the geographic coordinates withvaried accuracy.

SUMMARY

Methods, program products, and systems of context-based reversegeocoding are disclosed. In general, in one aspect, a mobile device canperform reverse geocoding based on context, in addition to latitude andlongitude coordinates. The reverse geocoding can be used to determine inwhich geofence among multiple geofences the mobile device is located.Thus, the mobile device can be associated with a street address, apostal code, a named land feature, or a commercial, cultural, orpolitical entity associated with the geofence. The context can include apattern of movement (e.g., speed, direction, and consistency), as wellas a horizontal accuracy of the latitude and longitude coordinates.Information in the context can be compared to selection criteria of thegeofence. A geofence having selection criteria that match the pattern ofmovement or the horizontal accuracy the best can be selected. An areaenclosed by selected geofence can be designated as a geofenced area inwhich the mobile device is located. The geofenced area can be a virtualarea corresponding to a physical geographic area.

In one aspect, one or more server computers can receive a currentlocation of a mobile device and a context of the current location. Thecurrent location can include latitude and longitude coordinates. Thecurrent location can have a size corresponding to a horizontal accuracyof the latitude and longitude coordinates. The context can include apattern of movement of the mobile device. The server computers canidentify, from multiple geofences, two or more geofences intersectingthe current location. The server computers can select a geofence fromthe two or more geofences using the context, and determine that themobile device is located inside the selected geofence.

In one aspect, a mobile device can determine a current location of themobile device and a context of the current location, the currentlocation having latitude and longitude coordinates and a sizecorresponding to a horizontal accuracy of the current location. Thecontext can include a pattern of movement of the mobile device. Themobile device can identify two or more geofences intersecting thecurrent location. The mobile device can select a geofence from the twoor more geofences using the context, and determining that the mobiledevice is located inside the selected geofence.

The details of one or more implementations of techniques ofcontext-based reverse geocoding are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of context-based reverse geocoding will become apparent fromthe description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates exemplary techniques of selecting a geofence usingreverse geocoding based on traveling speed of a mobile device.

FIG. 2 illustrates exemplary techniques of selecting one or moregeofences using reverse geocoding based on pattern of movement of amobile device.

FIG. 3A is a block diagram illustrating subsystems of an exemplarymobile device implementing techniques of context-based reversegeocoding.

FIG. 3B is a block diagram illustrating subsystems of an exemplaryserver implementing techniques of context-based reverse geocoding.

FIG. 4 illustrates an exemplary interaction between a mobile device anda server.

FIGS. 5A and 5B illustrate exemplary data structures used incontext-based reverse geocoding.

FIGS. 6A-6C are flowcharts illustrating exemplary processes ofcontext-based reverse geocoding.

FIG. 7 is a block diagram illustrating an exemplary device architectureof a mobile device implementing the features and operations ofcontext-based reverse geocoding.

FIG. 8 is a block diagram of an exemplary network operating environmentfor the mobile devices implementing features and operations ofcontext-based reverse geocoding.

FIG. 9 is a block diagram of an exemplary system architecture forimplementing the features and operations of selective locationdetermination on a server.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Overview of Context-Based Reverse Geocoding

FIG. 1 illustrates exemplary techniques of selecting a geofence usingreverse geocoding based on traveling speed of mobile device 100. Mobiledevice 100 can be an exemplary mobile device configured to implement thefeatures and operations of context-based reverse geocoding.

Mobile device 100 can travel in a geographic region 102. Geographicregion 102 can include various geographic features. The geographicfeatures can include points (e.g., bus stop 116), lines (e.g., “FirstStreet” 113 or “Main Street”), and areas (e.g., city hall 118). Each ofthe geographic features can be associated with a geofence, or a virtualperimeter surrounding the geographic feature. The geographic feature caninclude a street, a street address, a postal code, a named land feature,a social, commercial, cultural, historical, or political entity, avenue, or a combination of any two or more of the above. The virtualperimeter can be defined using latitude and longitude coordinates of oneor more points (e.g., a series of vertices). The series of vertices canform a closed polygon that encloses the geographic feature. Datadescribing the geographic feature, data related to the geographicfeature, and the geofence associated with the geographic feature can bestored on a storage device. A geofence can be defined by a user, forexample, as a part of a geographic centric social network.Alternatively, a geofence can be determined automatically. For example,a server can receive geographic coordinates of a TopologicallyIntegrated Geographic Encoding and Referencing (TIGER®) system, and usethe geographic coordinates associated with various geographic featuresor placemarks to define geofences for the placemarks. The server cangenerate thematic data, or data describing the various placemarks, forexample, by applying statistical analysis to locations of multiplelocation-aware mobile devices. To create a geofence around a point, thepoint can be treated as a circular area having a radius corresponding toa specified horizontal accuracy. The horizontal accuracy can correspondto a precision of a commercially available GPS system (e.g., 10 meters).To create a geofence around a line, the line can be treated as arectangular area having a width corresponding to the horizontalaccuracy.

When mobile device is located at or near a particular geographicfeature, mobile device 100 can display on a display screen a web pageabout the geographic feature, or other data related to the geographicfeature (e.g., a speed limit on a section of Highway 101). In someimplementations, mobile device 100 can be a location-aware mobiledevice, which is a mobile device that can determine a current locationthat includes latitude and longitude coordinates of mobile device 100using various techniques. Mobile device 100 can determine whether mobiledevice 100 is located at or near a geographic feature by comparing thecurrent location of the mobile device with the polygon of the geofencesurrounding the geographic feature. The comparison can occur on mobiledevice 100 or on a server that serves mobile device 100.

The current location of mobile device 100, as determined by mobiledevice 100, can have a horizontal accuracy. The horizontal accuracy canbe a factor for determining in which one of multiple geofences is mobiledevice 100 currently located using conventional location determinationmethods. For example, in geographic region 102, Frontage Road 104 can belocated in close proximity to Highway 101 (represented as the areabetween bold line 106 and bold line 107). In some geographic regions,Frontage Road 104 can be located directly under Highway 101 (e.g., undera raised section Highway 101). Mobile device 100 can determine thatmobile device 100 is located at point 114 as defined using latitude andlongitude coordinates. Point 114 can be associated with a horizontalaccuracy. The horizontal accuracy can indicate that, with a specifiedcertainty (e.g., 95 percent), mobile device 100 is located within circle112. Circle 112 can be centered at point 114, and have a radiuscorresponding to the horizontal accuracy (e.g., 100 meters). Because ofthe error margin, it is possible that mobile device 100 is located in anarea enclosed by any one of multiple possible geofences, e.g., ageofenced area corresponding to either Frontage Road 104, Highway 101South (labeled 108 in FIG. 1), Highway 101 North (labeled 110 in FIG.1), or First Street 113.

To determine in which geofenced area mobile device 100 is located,mobile device 100, or a server serving mobile device 100, can analyze apattern of movement of mobile device 100 and selection criteria of thepossible geofences. Each geofence can be associated with one or moreselection criteria that correspond to various patterns of movements. Forexample, Frontage Road 104 can be a one-way road (represented by anarrow in FIG. 1) on which a mobile device can travel up to 25 miles perhour (mph), bearing 45 degrees (northeast). Frontage Road 104 can beassociated with selection criteria that include the speed and thebearing. If mobile device 100 that is otherwise possibly located in anarea enclosed by the geofence of Frontage Road 104 is traveling at aspeed of 65 mph, bearing 225 degrees (southwest), there is a highprobability that mobile device 100 is not traveling on Frontage Road 104and is not located in an area enclosed by the of Frontage Road 104. Bycomparison, Highway 101 can have a speed limit of 65 mph. Highway 101can correspond to two geofences: Highway 101 North (labeled 110 in FIG.1), on which a mobile device can travel at a speed of 65 mph (plus orminus a tolerance), bearing 45 degrees, and Highway 101 South (labeled108 in FIG. 1), on which a mobile device can travel 65 mph (plus orminus a tolerance), bearing 225 degrees.

Mobile device 100 can determine a travel speed of mobile device 100using various means. For example, if mobile device 100 is GPS-enabled,mobile device 100 can determine a travel speed using the GPS signal. Ifmobile device 100 can determine a current location using triangulationof wireless access gateways, mobile device 100 can maintain a travelhistory data store, in which multiple locations and timestamps of thelocations can be stored. Using the locations and timestamps stored inthe travel history data store, mobile device 100 can calculate adistance traveled, a travel speed, and a direction of travel. Forexample, mobile device 100 can determine that mobile device 100 has beentraveling at a speed of 75 mph, bearing 225 degrees. The traveling speedcan be within a tolerance (e.g., between 45 mph and 150 mph) of speed oftravel that corresponds to Highway 101 South and Highway 101 North. Thedirection can match the bearing of Highway 101 South. The travelingspeed and direction can be a context, based on which mobile device 100can identify a geofence corresponding to Highway 101 South.

Mobile device 100 can display information related to the identifiedgeofence on a display device. For example, mobile device 100 can includemulti-touch sensitive display screen 120. An application program, storedlocally on mobile device 100 or remotely on a server serving mobiledevice 100, can be associated with an event of mobile device 100crossing a geofence. Mobile device 100 can cross a geofence when mobiledevice 100 enters or exits a geofenced area enclosed by the geofence.For example, the application program can be invoked when mobile device100 enters an area enclosed by the geofence of Highway 101 South. Theapplication program can be terminated or suspended when mobile deviceexits the area enclosed by the geofence.

The application program can display a user interface that includescontent display section 122 and map display section 124 on displayscreen 120. Content display section 122 can display content that relatesto the identified geofence (e.g., geofence of Highway 101 South). Forexample, content display section 122 can display a name (e.g., “Hwy 101S.” or “Bay Shore Freeway”) of the current section of Highway 101 South,a speed limit (65 mph) that applies to the current section of Highway101 South, and a current traveling speed of mobile device 100 (e.g., 75mph) on Highway 101 South. Map display section 124 can display a map ofa vicinity of the current location, for example, a map of a section ofgeographic area 102 that includes First Street, Frontage Road 104, andHighway 101. Refined location 126 of mobile device 101 can be overlaidon map display section 124. In the example shown, mobile device 100 hasdetermined that mobile device 100 is located in a geofence thatcorresponds to Highway 101 South. Accordingly, mobile device 100 candisplay refined location 126 in a polygon that corresponds to Highway101 South on map display section 124.

In some implementations, refined location 126 can be displayed inassociation with arrow 128, which can indicate a direction in whichmobile device 100 is traveling. Refined location 126 and arrow 128, asdisplayed on display screen 120, can be configured to receive a userinput (e.g., a touch or a gesture). Upon receiving the user input,mobile device 100 can display content of geofences that, according tothe current speed and traveling direction, mobile device 100 will enterwithin a threshold amount of time (e.g., five minutes).

FIG. 2 illustrates exemplary techniques of selecting one or moregeofences using reverse geocoding based on pattern of movement of mobiledevice 200. Mobile device 200 can be a mobile device such as mobiledevice 100 of FIG. 1.

At any given time, mobile device 200 can be located in multiplegeofenced areas. Geofences can intersect one another. When two geofencesintersect, the geofenced areas enclosed by the two geofences canoverlap. For example, mobile device 200 can be located in areas enclosedby geofence 202, which corresponds to geographic feature “SanFrancisco,” geofence 204, which corresponds to geographic feature“Financial District” of San Francisco, geofence 206, which correspondsto street “Bush Street” in the Financial District, geofence 208, whichcorresponds to “Sam's Grill and Seafood” restaurant located in alow-rise building at address 374 Bush Street, and geofence 210, whichcorresponds to “Singapore Airlines” located in a high-rise building ataddress 333 Bush Street. Sizes of the geofences drawn in FIG. 2 are forillustrative purposes and not drawn to scale. Geofences 208 and 210 canbe created by users and need not strictly correspond to the physicaladdresses. Accordingly, although “Sam's Grill and Seafood” and“Singapore Airlines” are not located at the same street address, areasenclosed by geofences 208 and 210 corresponding to the two businessescan overlap.

Mobile device 200 can be located in a geofenced area if mobile device200 is physically located in a geographic area enclosed by the geofence.In addition, mobile device 200 can be located a geofenced area if mobiledevice 200 satisfies certain selection criteria associated with thegeofence enclosing the area. It is possible that mobile device 200 isphysically located in a geographic area enclosed by the geofence but isnot located in the geofenced area (e.g., denied entry into the geofence)due to failure to satisfy the selection criteria. Likewise, it ispossible that mobile device 200, although not physically located in ageographic area enclosed by the geofence, is considered to be located inthe geofenced area if certain conditions are satisfied. For example,mobile device 200 can be located in a geofenced area if, based on acurrent traveling speed and direction, mobile device 200 will physicallycross the geofence enclosing the geofenced area within a specifiedthreshold amount of time. The geofenced area can correspond to thegeographic feature (e.g., a commercial entity) enclosed in the geofence.Neither the geofenced area nor the actual geographic area enclosed bythe geofence need to match the geographic feature exactly. For example,a geographic area of a commercial entity (e.g., a restaurant) enclosedby a geofence of the commercial entity can be larger than the geographicarea occupied by the commercial entity.

Based on current latitude and longitude coordinates, mobile device 200can determine that mobile device is located a geofenced area enclosed byany of the geofences 202, 204, 206, 208, and 210. When mobile device 200can be located in multiple geofenced areas, additional contextinformation can be used to determine in which geofenced area mobiledevice 200 is located. Based on an accuracy of the latitude andlongitude coordinates, or a pattern of movement of mobile device 200, orboth, mobile device 200 can select one or more geofences from themultiple geofences and perform one or more tasks that correspond to theselected geofences.

In some implementations, a horizontal accuracy can be used to select ageofence. The horizontal accuracy can be an accuracy associated with alongitude coordinate and a latitude coordinate of the mobile device. Thehorizontal accuracy can vary (e.g., can be coarse, medium, or fine). Thehorizontal accuracy can be a selection criterion associated with ageofence. For example, mobile device 200 can be a mobile device thatuses cell triangulation to determine coarse location 212 of mobiledevice 200. A coarse location can be latitude and longitude coordinateswith a specified horizontal accuracy (e.g., an error margin that isgreater than a threshold value of 20 meters). In FIG. 2, coarse location212 can intersect multiple geofences (e.g., geofence 202, 204, 206, 208,and 210). A location intersects a geofence when at least a portion of anarea enclosed by the geofence is located within an area defined by thelatitude and longitude coordinates and the horizontal accuracy of thelocation. A size of the area defined by the latitude and longitudecoordinates and the horizontal accuracy of the location can be referredto as a size of the location. When the location is coarse, mobile device100 can select one or more geofences at least partially based on sizesof the geofences and the size of the location. For example, mobiledevice can select one or more geofences 202 and 204 that completelyenclose location 212. Considering the horizontal accuracy, mobile device200 can have a high confidence that mobile device 200 is located ingeofences 202 and 204. Thus, for example, mobile device 200 can displaycontent related to “San Francisco” or to “Financial District” of SanFrancisco. In some implementations, mobile device 200 can select ageofence (e.g., geofence 204) that is a smallest geofence thatcompletely encloses location 212. Thus, for example, mobile device 200can display content related to “Financial District” of San Francisco.

In some implementations, mobile device 200 can obtain fine location 214of mobile device 200. Fine location 214 can be a location that has aspecified horizontal accuracy (e.g., an error margin that is at or belowa threshold value of 20 meters). The threshold value can vary. Forexample, in a downtown area, the threshold value can be set to a valuethat is smaller than the threshold value set for a rural area. Todetermine whether a geographic region is a downtown area or a ruralarea, mobile device 200 (or a server remotely connected to mobile device200) can calculate a number of intersecting geofences in the geographicregion. The threshold value in the geographic region can be inverselyproportional to the number intersecting geofences.

When the location of mobile device 200 is a fine location (e.g., finelocation 214), mobile device 200 can use a pattern of movement to selecta geofence that intersects fine location 214. For example, if mobiledevice 200 travels at 25 mph following motion path 218, the direction oftravel can correspond to a bearing of Bush Street, mobile device 200 canselect geofence 206 that corresponds to Bush Street. If mobile device200 travels at 25 mph following motion math 216, mobile device 200 canselect a geofence in which the speed and direction of travel isallowable (e.g., a geofence corresponding to Kearney Street, whichperpendicularly intersects Bush Street). Mobile device 200 can use thetravel direction to override the determined location (e.g., location214). For example, when location 214 does not intersect the geofencecorresponding to Kearney Street, and Kearney Street is the only streetin the vicinity of location 214 where the travel speed and direction areallowable, mobile device 200 can select the geofence corresponding toKearney Street despite the determined location 214.

In some implementations, mobile device 200 can select a geofence basedon an altitude of mobile device 200. For example, according to location214, mobile device 200 can be located either in the area enclosed bygeofence 208 corresponding to “Sam's Grill and Seafood” or in the areaenclosed by geofence 206 corresponding to Bush Street. Mobile device 200can be traveling at between 0 to 1 miles an hour (e.g., a user of mobiledevice 200 is either stationary or walking slowly), which is allowable(e.g., satisfies a selection criterion) for both geofence 206 andgeofence 208. Mobile device 200 can determine that an altitude of mobiledevice 200 is, with a vertical accuracy, five meters above street levelof a section of Bush Street proximate to location 214. According toselection criteria specified for geofences 206 and 208, the five-meterelevation is not allowable for geofence 206, but allowable for geofence208 (which encloses a multi-story low-rise building). Mobile device 200can select geofence 208 as a current geofence, and determine that mobiledevice 200 is located the area enclosed by geofence 208. Accordingly,mobile device 200 can display content related to “Sam's Grill andSeafood” restaurant.

In some implementations, mobile device 200 can select a geofence basedon a vertical speed of mobile device 200. For example, according tolocation 214, mobile device 200 can be located in the area enclosed bygeofence 210 corresponding to “Singapore Airlines” or in the areaenclosed by geofence 208 corresponding to “Sam's Grill and Seafood.”Mobile device 200 is stationary horizontally. Mobile device 200 candetermine that an altitude of mobile device 200 is, with a verticalaccuracy, five meters above street level of Bush Street at locationproximate to location 214. The five-meter elevation is allowable in bothgeofence 208 that encloses a low-rise building and geofence 210 thatencloses a high-rise building. Mobile device 200 can further determinethat mobile device 100 has traveled at a vertical speed of five metersper second upwards in the last few seconds. The determination can bemade using triangulation of WiFi™ access points between floors of abuilding. Based on the vertical travel speed, mobile device 200 candetermine that mobile device 200 is located in a high-rise building thathas a high-speed elevator. Accordingly, mobile device 200 can selectgeofence 210 as a current geofence, inside of which mobile device 200 islocated. Information related to Singapore Airlines that correspond togeofence 210 can be displayed on a display screen of mobile device 200.

Exemplary Components for Systems Implementing Context-Based ReverseGeocoding

FIG. 3A is a block diagram illustrating subsystems of exemplary mobiledevice 300 implementing techniques of context-based reverse geocoding.Mobile device 300 can be a mobile device such as mobile device 100 ofFIG. 1. Mobile device 300 can include application subsystem 302,baseband subsystem 320, wireless local area network (WLAN) subsystem330, and GPS subsystem 340. Application subsystem 302 can be configuredto perform traditional computer functions, such as executing applicationprograms, storing various data, and displaying digital images.Application subsystem 302 can include application processor 304 andapplication operating system 306. Baseband subsystem 320 and WLANsubsystem 330 can be used additional to or as alternatives of GPSsubsystem 340 for determining a current location of mobile device 300.

Baseband subsystem 320 can include a baseband processor, cellulartransceiver 322, and baseband operating system 324 that manages variousfunctions of baseband subsystem 320. Baseband subsystem 320 can beconfigured to monitor a current cell ID. Monitoring a current cell IDcan include detecting that a current cell ID has changed. Basebandsubsystem 320 can notify application subsystem 320 when a current cellID changes. Baseband subsystem 320 can be configured to submit thecurrent cell ID to application subsystem 302 upon receiving a requestfrom application subsystem 302.

When application subsystem 302 receives the current cell ID frombaseband subsystem 320, application subsystem 302 can determine a celllocation using cell location calculator 308. A cell location can be alocation calculated statistically based on usage information, e.g.,location mobile devices that are, or have been, connected to a celltower. A cell location need not correspond precisely to a size or shapeof an actual cell. Cell location calculator 308 can query cell locationdata store 314 using the received current cell ID and retrieve a celllocation associated with the received current cell ID. Cell locationdata store 314 can store cell locations, associating cell IDs. Celllocation data store 314 can reside on mobile device 300, reside on aserver remotely, or be distributed among various mobile devices andservers.

If cell location calculator 308 fails to retrieve a cell locationcorresponding to the received current cell ID, cell location calculator308 can request an update from a remote server through a communicationsnetwork using a cell information update request. The request can includethe received current cell ID, and can be made through data communicationfunctions of baseband subsystem 320 or data communication functions ofWLAN subsystem 330. If the server fails to respond, or the responsefails to identify a cell location corresponding to the received currentcell ID, mobile device 300 can determine a current location using a WLANlocation. A WLAN location can be a location determined by triangulatinga location of various wireless access points in a WLAN.

WLAN subsystem 330 can include a WLAN processor, wireless transceiver334, and WLAN operating system 332 that manages various functions ofWLAN subsystem 330. WLAN subsystem 330 can be configured to scanwireless communication channels to detect access points that are locatedwithin a communication range of mobile device 300. Detecting the accesspoints can include detecting media access control (MAC) addressesassociated with the access points. WLAN subsystem 330 can be configuredto submit the detected MAC addresses to application subsystem 302 uponreceiving a request from application subsystem 302.

When application subsystem 302 receives the MAC addresses from WLANsubsystem 330, application subsystem 302 can determine a WLAN locationusing WLAN location calculator 312. WLAN location calculator 312 canquery access point location data store 316 using the received MACaddresses, and retrieve one or more access point locations. Access pointlocation data store 316 can store access point locations associated withthe MAC addresses. Access point location data store 316 can reside onmobile device 300, reside on a server remotely, or be distributed amongvarious mobile devices and servers.

If WLAN location calculator 312 fails to retrieve an access pointlocation corresponding to a MAC address, WLAN location calculator 312can request an update from a remote server through a communicationsnetwork using an access point information update request. The requestcan include the received MAC addresses, and can be made through datacommunication functions of baseband subsystem 320 or data communicationfunctions of WLAN subsystem 330.

WLAN location calculator 312 can determine a WLAN location of mobiledevice 300 using the access point locations retrieved from access pointlocation data store 316. Determining the WLAN location can includetriangulating the WLAN location from the access point locations.Alternatively or additionally, WLAN location calculator 312 candetermine the WLAN location of mobile device 300 using an iterativeprocess that triangulates a most likely location. Mobile device 300 candetermine a current location using a tiered approach. For example,mobile device 300 can attempt to determine a current location using aGPS subsystem 340. If a location cannot be determined (e.g., due to poorquality of GPS signal), mobile device 300 can attempt to determine thecurrent location using WLAN subsystem 330. If no wireless access pointsfor triangulation are detectable, mobile device 300 can attempt todetermine the current location using baseband subsystem 320. Mobiledevice 300 can determine the current location using a combination of GPSsubsystem 340, WLAN subsystem 330, and baseband subsystem 320. Ahorizontal accuracy of latitude and longitude coordinates using onesubsystem (e.g., GPS subsystem 340) can be weighed differently from thatof a location determined by another subsystem (e.g., baseband subsystem320).

Application subsystem can include pattern calculator 310. Patterncalculator 310 can be used to determine a pattern of movement of mobiledevice 300. Mobile device 300 can poll current locations of mobiledevice 300 periodically, based on one or more of cell ID tracking,wireless access point positioning (e.g., by triangulating wirelessassess points), and GPS. The polling can be performed at variableintervals. The intervals can vary based on a current speed of mobiledevice 300. For example, the interval (e.g., time period until a nextpoll) can be inversely proportional to the speed at which mobile device300 travels. In some implementations, the speed can be determined usingthe distance traveled during last n polls (e.g., the last two polls) andthe time that elapsed between the last n polls. The interval can have alower limit (e.g., ten minutes) that determines a maximum frequency ofthe polling (e.g., polls at most every ten minutes). The locationspolled (including latitude and longitude coordinates) as well as thecurrent speed can be stored in location history data store 350 forcalculation in a next poll. Travel direction can also be determinedusing the locations stored in location history data store 350. Patterncalculator can also calculate a movement consistency based on the storedlocations. Movement consistency can be used to measure a frequency ofspeed change. If mobile device 300 changes speed at a rate that exceedsa threshold, the change can indicate mobile device 300 has arrived at adestination or has departed a particular place. Mobile device 300 canselect a geofence that is different from a current geofence in response.

FIG. 3B is a block diagram illustrating subsystems of exemplary server360 implementing techniques of context-based reverse geocoding. Server360 can include one or more processors, and one or more storage devicesthat can store instructions for performing context-based reversegeocoding. Server 360 can include, or be connected to, geofence datastore 362. In some implementations, geofence data store 362 can bedistributed among multiple servers or between server 360 and mobiledevices. For example, mobile device 300 of FIG. 3A can store a portionof data geofence data store 362.

Geofence data store 362 can store one or more geofences, includinggeometry of the geofences (e.g., the vertices) and selection criteria ofthe geofences. The selection criteria can include conditions forallowing a mobile device to virtually enter or exit areas enclosed bythe geofences. The selection criteria can include, for example, atraveling speed or a range of traveling speeds, a traveling direction, aconsistency of movement, one or more last known locations, etc. Theselection criteria can be matched against a pattern of movement of themobile device for determining whether the mobile device can enter thegeofence.

Server 360 can include data collection subsystem 370. Data collectionsubsystem 370 can be used to populate geofence data store 362. Datacollection subsystem 370 can include geographic definition component 372that can be used to specify geometry of the geofences of geofence datastore 362. For example, geographic definition component 372 can receive,from one or more mobile devices, a user defined geofence or anautomatically defined. The geofence can be any closed geometric shape(e.g., a circle, an ellipse, a polygon, or a free-style shape) that isdrawn by the user.

Data collection subsystem 370 can include geofence criteria builder 374.Geofence criteria builder 374 can be used to define selection criteriaassociated with the geofence. The selection criteria can be specified bya user. For example, based on a user input, geofence criteria builder374 can specify that only mobile devices that have entered a firstgeofenced area (e.g., a registration area) in a particular time period(e.g., less than an hour ago) are allowed to enter a second geofencedarea (e.g., a conference room) where the mobile devices can receivespecific content related to the second geofence (e.g., a meetingagenda). Mobile devices that have not entered the first geofenced area,although physically present in the geographic area enclosed by thesecond geofence, can be virtually denied entry into the second geofencedarea and denied the content. The selection criteria can includerequirements that a mobile device needs to travel a trajectory (e.g., tocross a series of first geofences in sequence) before being allowed toenter the second geofence.

In some implementations, geofence criteria builder 374 can attachselection criteria to a geofence based on historical data received fromone or more mobile devices. Server 360 can receive multiple locationsand contexts including patterns of movement of the mobile devices. Thepatterns of movement can be attached to a particular geofence when thepatterns are frequently present when the mobile devices are in thegeofence. For example, if most mobile devices in a particular geofenceassociated with a street travel between 35 mph and 50 mph, bearingeither 90 degrees (east) or 270 degrees (west), the speeds 35 mph and 50mph and the bearings 90 and 270 degrees can be added as selectioncriteria for the particular geofence.

Server 360 can include data distribution subsystem 390. Datedistribution subsystem 390 can include request receiver 392 that caninclude hardware and software for receiving a request from a mobiledevice. The request can be passed to geofence selection subsystem 380.Geofence selection subsystem 380 can include geofence locator 382.Geofence locator 382 can retrieve one or more geofences from geofencedata store 362 based on location. When no other context information areavailable, geofence locator 382 can select one or more retrievedgeofences to send to the requesting mobile device based on specifieddefault selection criteria (e.g., popularity of the geofences).

Geofence selection subsystem 380 can include context analyzer 384. Whencontext information (e.g., a pattern of movement) is associated with arequest, context analyzer 384 can analyze the received context,including comparing the pattern to the selection criteria of thegeofences retrieved by the geofence locator 382. Context analyzer 384can select one or more geofences based on the comparison.

Server 360 can include, or be connected to, content data store 364.Content data store 364 can store content that is related to thegeofences. In some implementations, the content can be generateddynamically by server 360 or by other content-generating sources. Thecontent related to the selected geofence can be provided to therequesting mobile device using result transmitter 394 of datadistribution subsystem 390.

FIG. 4 illustrates an exemplary interaction between mobile device 400and server 420. Server 420 can be a server such as server 360 of FIG.3B. Mobile device 400 can be a mobile device such as mobile device 100of FIG. 1. Mobile device 400 can request an update of locationidentifiers (e.g., cell IDs or MAC addresses of wireless access points)stored in cell location data store 314 or access point location datastore 316. The request can be sent to server 420 when mobile device 400is located in a place (e.g., cell 402) whose location mobile device 400does not know.

Mobile device 400 can transmit request 404 to a server 420 throughnetwork 410 to request location identifiers that include a locationidentifier (e.g., a current cell ID) of a current wirelesscommunications gateway (e.g., a cell tower). Request 404 can includecurrent location information as well as the type of location identifiersrequested. The current location information can include, for example,one or more of current cell ID, current location area code (LAC),current mobile network code (MNC), and current mobile country code(MCC). The type of location identifiers can include identifying whethermobile device 400 seeks identifiers of wireless access points, cell IDs,LACs, MNCs, or MCCs.

Upon receiving request 404, server 420 can identify one or more locationidentifiers from gateway data store 422 to be transmitted to mobiledevice 400. Identifying the location identifiers from gateway data store422 can include, for example, identifying some or all cell IDscorresponding to the LAC or MCC in request 404. The identified locationidentifiers, as well as locations associated with the locationidentifiers, can be transmitted to mobile device 400 in response 406.

Mobile device 400 can retrieve an identifier of a geofence andinformation related to the geofence from server 420 using request 404.Request 404 can include a current location of mobile device 400. Thecurrent location can include latitude, longitude, and optionally,altitude coordinates, as wall as horizontal accuracy (e.g., an errormargin of the latitude and longitude) and vertical accuracy (e.g., anerror margin of the altitude). Request 404 can include context of thecurrent location (e.g., a pattern of movement of mobile device 400).

Upon receiving the current location and context of the current locationfrom mobile device 400, server 420 can identify one or more geofencesfrom geofence data store 424. Identifying the geofences from geofencedata store 424 can include a multi-stage process. Server 420 canretrieve all geofences in which mobile device 400 can possibly belocated based on the latitude, longitude, and optionally, altitudecoordinates. Server 420 can filter the retrieved geofences based on thehorizontal accuracy and vertical accuracy. Server 420 can further selectone or more geofences from the filtered geofences as current geofencesof mobile device 400 based on the context.

Geofence data store 424 can store various specifications of thegeofences. The specifications can include coordinates of the vertices ofthe polygons that constitute the geofences, selection criteria of thegeofences that can be matched to a pattern or movement of a mobiledevice or used to exclude a pattern or movement of a mobile device, aswell as content related to the geofence or references to content that isrelated to the geofence. The specifications of the geofences can beconfigured by one or more users. Server 420 can provide to mobile device400, in response 406, content that is related to a geofence that hasbeen selected. In some implementations, geofence data store 424 can bestored in a distributed system that includes one or more servercomputers and one or more mobile devices. At least a portion of geofencedata store 424 can be stored on mobile device 400.

Exemplary Data Structures Used in Context-Based Reverse Geocoding

FIGS. 5A and 5B illustrate exemplary data structures used incontext-based reverse geocoding. For convenience, the data structureswill be described in reference to a relational database using terms suchas tables, data fields and keys. The data structures described in FIGS.5A and 5B can be implemented using any technology, for example, arelational database, an object-oriented database, an R-tree datastructure serialized as flat file, etc.

FIG. 5A illustrates exemplary data structure 500 that can be used tostore geofences whose specifications include speed requirements. Table502 can be a path table that includes a name (e.g., “Hwy 101”) of a path(e.g., a freeway), which can include one or more segments. Path table502 can be linked to path segment table 504 using key “path ID.” Pathsegment table 504 can store segments of a path (e.g., a section ofHighway 101). A segment of a path can correspond to a geofence thatincludes one or more polygons. Path segment table 504 can be linked topolygon table 506 through a polygon identifier (polygon ID). Polygontable 506 can store vertices of one or more polygons that constitute thegeofence. Path segment table 504 can be linked to headings table 508through key “heading.” Heading table 508 can include one or morebearings or travel directions permitted on the path segment at whichmovements are permitted (e.g., 45 degrees from north). A bearing canhave a tolerance (e.g., plus or minus 10 degrees). The tolerance can bespecific to the path segment.

Path segment table 504 can include data fields that contain otherinformation related to each path segment. Some examples of these datafields can be path segment name (e.g., “Bay Shore Freeway South” for asection of “Hwy 101”), a speed limit (e.g., 65 mph), a speed limittolerance that can specify a range of speed within which range aspeed-based geofence determination can be made. For example, a speedlimit tolerance for “Bay Shore Freeway” can specify that a selectioncriterion is satisfied if a speed of the mobile device is between 45 mphand 150 mph. If a mobile device travels below 45 mph, the mobile devicecan be traveling on a surface street. If a mobile device travels above150 mph, the mobile device can be traveling in an airplane whose pathcoincide with “Hwy 101.” In these situations, other pattern of movementcan be used to determine whether the mobile device is located in thegeofence.

Path segment table 504 can be linked to content table using a contentidentifier (content ID). The content table can include static or dynamiccontent to be delivered to a mobile device if the mobile device islocated in a geofence that encloses the path segment of path segmenttable 504.

FIG. 5B illustrates exemplary data structure 530 that can be used tostore geofences. Geofence table 530 can store specifications of one ormore geofences. A geofence can include one or more polygons. Thepolygons can be stored in polygon table 534. The polygon table can belinked to geofence table 530 using a polygon ID. A geofence can includemultiple discrete polygons. For example, a geofence can specify “cityparks” which can include multiple polygons each enclosing a separatecity park. A geofence can be a polygon that includes one or more holes.For example, a geofence can specify “Mountain Time Zone” which caninclude the Mountain Time Zone states of the United States, with a holethat corresponds to Navajo Nation (in Arizona) carved out. Polygon table534 can store the multiple polygons as positive polygons or negativepolygons (e.g., the holes) and distinguish the negative polygons, forexample, by storing the vertices clockwise or counter clockwise.

Geofence table 530 can include a polygon size data field, which canstore a size of the geographic area enclosed by the geofence. The sizecan be calculated from the polygon or polygons stored in polygon table534. The size can be used to compare with a size of a location(including horizontal accuracy) of a mobile device. In someimplementations, a geofence is selected if the size of the geofence isin a same size category as the size of the location. A size category caninclude a range of sizes that are in the same magnitude. For example, afirst size category can be one to 1000 square meters; a second sizecategory can be 1000 square meter to one square kilometer, etc.

Geofence table 530 can include a motion pattern ID that links to motionpattern table 536. Motion pattern table 536 can store data thatdescribes what motion pattern can fit geofence 532. The motion patterncan include speed, direction, trajectory, and consistency. In someimplementations, the motion pattern can include a trajectory. Thetrajectory can include a previous location of the mobile device. Mobiledevices coming to a particular geographic region from different placescan enter different but overlapping geofences. For example, an “inboundinternational flight connection at SFO” geofence corresponding to SanFrancisco International Airport (SFO) can have a selection criterionspecifying that only a mobile device whose last known location isoutside of the United States can enter the geofence. An “outboundinternational flight connection at SFO” may not have such a selectioncriterion.

Geofence table 530 can be linked to content table 538 through a contentID data field. Content table 538 can store content or reference tocontent that can be provided to a mobile device that is inside thegeofence. The content can include, for example, economic informationrelated to the geographic feature enclosed by the geofence, populationof a defined area (e.g., in a postal code, a congressional district, ora township) enclosed by the geofence, historical data, time zone, etc.

Exemplary Processes of Context-Based Reverse Geocoding

FIGS. 6A-6C are flowcharts illustrating exemplary processes ofcontext-based reverse geocoding. FIG. 6A is a flowchart illustratingexemplary process 600 of context-based reverse geocoding. Process 600can be executed on a mobile device (e.g., mobile device 100 of FIG. 1).

The mobile device can determine (602) a first location (e.g., a coarselocation) of the mobile device. The coarse location can be determinedusing GPS, triangulation of wireless access points, or triangulation ofcell towers of a cellular communications network. The coarse locationcan be represented as a circle having a center and a radius. The centercan be defined by coordinates that include a latitude, a longitude, andoptionally an altitude. The radius can correspond to a horizontalaccuracy of the coarse location. The circle can intersect a firstgeofence and a second geofence. The first geofence can correspond to aninterstate highway. The second geofence can correspond to a frontageroad that is located in proximity with and runs parallel to theinterstate highway.

The mobile device can calculate (604) a traveling speed and direction ofthe mobile device. Based on the calculated traveling speed anddirection, the mobile device can select (606) one of the first geofenceand the second geofence. If the calculated traveling speed satisfies athreshold speed specified in a selection criterion associated with firstgeofence that corresponds to the interstate highway, the mobile devicecan select the first geofence. Otherwise, the mobile device can selectthe second geofence. The mobile device can determine (608) a secondlocation (e.g., a refined location) of the mobile device based on anintersection between the coarse location and the selected geofence. Themobile device can display (610) the second location on a display screenof the mobile device.

FIG. 6B is a flowchart illustrating exemplary process 620 ofcontext-based reverse geocoding. Process 620 can be executed on a server(e.g., server 360 of FIG. 3B).

The server can receive (622) a current location of a mobile device and acontext of the current location. The current location of the mobiledevice can include a latitude, a longitude, and optionally, an altitudeof the mobile device. The current location can be a point defined by thelatitude, longitude, and altitude, an area including the point andhaving a size corresponding to an accuracy (e.g., a horizontal accuracy)of the current location, or a space including the point and having asize corresponding to a horizontal accuracy and a vertical accuracy ofthe current location. The accuracy (horizontal accuracy or verticalaccuracy) can be determined by the mobile device when the mobile devicecalculates the current location, or by the server based oncharacteristics of a technology used for determining the currentlocation. The context can include an identifier of the technology used(e.g., GPS, WLAN triangulation, or cell triangulation). The server canspecify an accuracy for each of the technologies. For example, anaccuracy specified for GPS technology can include a 30-meter horizontalaccuracy and a 30-meter vertical accuracy. An accuracy specified forcell triangulation technology can include a one kilometer horizontalaccuracy and infinite vertical accuracy. The value of an accuracy for atechnology can measure the least amount of error obtainable using thetechnology.

The geofence of stage 622 can include one or more polygons or curvedshapes (e.g., circles or ellipses). The geofence can be associated withvarious functions that can be performed on a mobile device if the mobiledevice is located inside the geofence. For example, an applicationprogram can be associated with a geofence. If a mobile device enters thegeofence, the application program can be invoked or notified on themobile device. In some implementations, the geofence can includevertices of a three-dimensional space. For example, the geofences caninclude eight vertices of a rectangular prism that encloses one or morefloors of a building.

The context received in stage 622 can include a pattern of movement ofthe mobile device. The pattern of movement can include at least one of aspeed of movement of the mobile device, a trajectory of the mobiledevice, and a moving direction of the mobile device. The trajectory ofthe mobile device can include a series of one or more geofences that themobile device has visited previously, or a series of locations that themobile device has visited previously. The trajectory can include timeinformation associated with the visited geofences. The trajectory caninclude one or more geofences that, based on the current travel speedand direction, the mobile device is projected to visit within athreshold of time.

The server can identify (624), from multiple geofences, two or moregeofences intersecting the current location. Identifying the geofencescan include determining that the two or more geofences intersect thecurrent location using various clipping algorithms. Some exampleclipping algorithms include Weiler-Atherton clipping algorithm andSutherland-Hodgman clipping algorithm.

The server can select (626) a geofence from the two or more geofencesusing the context. Selecting the geofence using the context can includecomparing the pattern of movement in the context with one or moreselection criteria of the two or more geofences. Selecting the geofenceusing the context can include matching a pattern of movement of themobile device with historical patterns of movements of various mobiledevices that have been associated with the geofence as selectioncriteria. The server can identify one or more historical movementpatterns of mobile devices in each of the two or more geofences. Theserver can calculate match scores measuring matches between thehistorical movement patterns to the pattern of movement of the mobiledevice in the context, and select a geofence based on the match scores.For example, the server can select a geofence that has the highest matchscore. Selecting the geofence from the two or more geofences using thecontext can denying virtual entry of the mobile device into a geofencehaving a specified selection criterion when the mobile device isphysically located in a geographic area enclosed by the geofence havingthe specified selection criterion when the pattern of movement in thecontext fails to meet the specified selection criterion.

In some implementations, selecting the geofence in stage 626 can includeselecting a geofence based on fence size and the pattern of movement ofthe mobile device. The server can identify a fence size for each of thetwo or more geofences. The fence size of a geofence can be an area of ageographic location enclosed in the geofence. The server can calculatematch scores measuring matches between the fence sizes and the patternof movement of the mobile device. The server can select the geofencebased on the match scores. For example, the server can specify a fencesize that is proportional to a traveling speed of the mobile device, andselect a geofence whose fence size is closest to the specified fencesize. Thus, the faster a mobile device travels, the larger the selectedgeofence.

The server can determine (628) that the mobile device is located in ageofenced area enclosed by the selected geofence. In someimplementations, each of the two or more geofences can be associatedwith an address. Determining that the mobile device is located in thegeofenced area enclosed by the selected geofence can include determiningthat the mobile device is located at the address associated with thegeofence. The address can be a neighborhood name, a street name, alandmark name (e.g., a name of a mountain), a postal code, a politicaldistrict, or a business address of a commercial entity.

The server can provide (630) an intersection of the current location ofthe mobile device and the geofenced area enclosed in the selectedgeofence as a refined current location of the mobile device to themobile device for display. The server can provide content related to theselected geofence to the mobile device.

FIG. 6C is a flowchart illustrating exemplary process 640 ofcontext-based reverse geocoding. Process 640 can be executed on a mobiledevice (e.g., mobile device 100 of FIG. 1).

The mobile device can determine (642) a current location of the mobiledevice and a context of the current location. The current location canhave a size corresponding to an accuracy of the current location. Thecontext can include a pattern of movement of the mobile device and ahorizontal accuracy of the current location.

The mobile device can identify (644) two or more geofences intersectingthe current location. Identifying the two or more geofences intersectingthe current location can include identifying the two or more geofencesfrom multiple geofences stored in a geofence data store that is includedin or connected to the mobile device. The multiple geofences can bereceived from a server.

The mobile device can select (646) a geofence from the two or moregeofences using the context. Selecting the geofence can includeanalyzing the pattern of movement of the mobile device and determiningwhether the pattern of movement of the mobile device satisfies aselection criterion of the geofence. Selecting the geofence can includeselecting the geofence based on the horizontal accuracy of the currentlocation. The horizontal accuracy can be determined using varioustechnologies. The technologies can include a GPS, triangulation usinglocations of wireless access points of a WLAN, and triangulation usinglocations of cell towers of a cellular communications network. Eachtechnology can be associated with a specified horizontal accuracy. Forexample, a technology can be associated with a coarse, medium, or fineaccuracy, each accuracy corresponding to a value (e.g., measured inmeters). The accuracy can be the selection criterion of the geofence.Selecting the geofence can include selecting the geofence based on acombination of the horizontal accuracy of the current location and thepattern of movement of the mobile device.

The mobile device can determine (648) that the mobile device is locatedinside the selected geofence. The mobile device can request (650), froma server, content related to the geofence for display on the mobiledevice.

Exemplary Mobile Device Architecture

FIG. 7 is a block diagram of an exemplary architecture 700 for a mobiledevice implementing the features and operations of context-based reversegeocoding. A mobile device (e.g., mobile device 100) can be, forexample, a handheld computer, a personal digital assistant, a cellulartelephone, an electronic tablet, a network appliance, a camera, a smartphone, an enhanced general packet radio service (EGPRS) mobile phone, anetwork base station, a media player, a navigation device, an emaildevice, a game console, or a combination of any two or more of thesedata processing devices or other data processing devices.

Mobile device 100 can include memory interface 702, one or more dataprocessors, image processors and/or processors 704, and peripheralsinterface 706. Memory interface 702, one or more processors 704 and/orperipherals interface 706 can be separate components or can beintegrated in one or more integrated circuits. Processors 704 caninclude application processors (APs) and baseband processors (BPs). Thevarious components in mobile device 100, for example, can be coupled byone or more communication buses or signal lines.

Sensors, devices, and subsystems can be coupled to peripherals interface706 to facilitate multiple functionalities. For example, motion sensor710, light sensor 712, and proximity sensor 714 can be coupled toperipherals interface 706 to facilitate orientation, lighting, andproximity functions of the mobile device. Location processor 715 (e.g.,GPS receiver) can be connected to peripherals interface 706 to providegeopositioning. Electronic magnetometer 716 (e.g., an integrated circuitchip) can also be connected to peripherals interface 706 to provide datathat can be used to determine the direction of magnetic North. Thus,electronic magnetometer 716 can be used as an electronic compass.Accelerometer 717 can also be connected to peripherals interface 706 toprovide data that can be used to determine change of speed and directionof movement of the mobile device.

Camera subsystem 720 and an optical sensor 722, e.g., a charged coupleddevice (CCD) or a complementary metal-oxide semiconductor (CMOS) opticalsensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 724, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 724 can depend on the communications network(s)over which a mobile device is intended to operate. For example, a mobiledevice can include communication subsystems 724 designed to operate overa GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMaxnetwork, and a Bluetooth network. In particular, the wirelesscommunication subsystems 724 can include hosting protocols such that themobile device can be configured as a base station for other wirelessdevices.

Audio subsystem 726 can be coupled to a speaker 728 and a microphone 730to facilitate voice-enabled functions, such as voice recognition, voicereplication, digital recording, and telephony functions.

I/O subsystem 740 can include touch screen controller 742 and/or otherinput controller(s) 744. Touch-screen controller 742 can be coupled to atouch screen 746 or pad. Touch screen 746 and touch screen controller742 can, for example, detect contact and movement or break thereof usingany of a plurality of touch sensitivity technologies, including but notlimited to capacitive, resistive, infrared, and surface acoustic wavetechnologies, as well as other proximity sensor arrays or other elementsfor determining one or more points of contact with touch screen 746.

Other input controller(s) 744 can be coupled to other input/controldevices 748, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of speaker 728 and/or microphone 730.

In one implementation, a pressing of the button for a first duration maydisengage a lock of the touch screen 746; and a pressing of the buttonfor a second duration that is longer than the first duration may turnpower to mobile device 100 on or off. The user may be able to customizea functionality of one or more of the buttons. The touch screen 746 can,for example, also be used to implement virtual or soft buttons and/or akeyboard.

In some implementations, mobile device 100 can present recorded audioand/or video files, such as MP3, AAC, and MPEG files. In someimplementations, mobile device 100 can include the functionality of anMP3 player, such as an iPod™. Mobile device 100 may, therefore, includea pin connector that is compatible with the iPod. Other input/output andcontrol devices can also be used.

Memory interface 702 can be coupled to memory 750. Memory 750 caninclude high-speed random access memory and/or non-volatile memory, suchas one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). Memory 750 canstore operating system 752, such as Darwin, RTXC, LINUX, UNIX, OS X,WINDOWS, or an embedded operating system such as VxWorks. Operatingsystem 752 may include instructions for handling basic system servicesand for performing hardware dependent tasks. In some implementations,operating system 752 can include a kernel (e.g., UNIX kernel).

Memory 750 may also store communication instructions 754 to facilitatecommunicating with one or more additional devices, one or more computersand/or one or more servers. Memory 750 may include graphical userinterface instructions 756 to facilitate graphic user interfaceprocessing; sensor processing instructions 758 to facilitatesensor-related processing and functions; phone instructions 760 tofacilitate phone-related processes and functions; electronic messaginginstructions 762 to facilitate electronic-messaging related processesand functions; web browsing instructions 764 to facilitate webbrowsing-related processes and functions; media processing instructions766 to facilitate media processing-related processes and functions;GPS/Navigation instructions 768 to facilitate GPS and navigation-relatedprocesses and instructions; camera instructions 770 to facilitatecamera-related processes and functions; magnetometer data 772 andcalibration instructions 774 to facilitate magnetometer calibration. Thememory 750 may also store other software instructions (not shown), suchas security instructions, web video instructions to facilitate webvideo-related processes and functions, and/or web shopping instructionsto facilitate web shopping-related processes and functions. In someimplementations, the media processing instructions 766 are divided intoaudio processing instructions and video processing instructions tofacilitate audio processing-related processes and functions and videoprocessing-related processes and functions, respectively. An activationrecord and International Mobile Equipment Identity (IMEI) or similarhardware identifier can also be stored in memory 750. Memory 750 caninclude reverse geocoding instructions 776 that can be used to determinea current location of mobile device 100, determine a context of thecurrent location, submitting the current location and the context to aserver to request geofence information or determining locally a geofencein which mobile device 100 is located.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures, or modules. Memory 750 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device may be implemented in hardware and/or insoftware, including in one or more signal processing and/or applicationspecific integrated circuits.

Exemplary Operating Environment

FIG. 8 is a block diagram of an exemplary network operating environment800 for mobile devices implementing the features and operations ofcontext-based reverse geocoding. Mobile devices 802 a and 802 b can bemobile device such as mobile device 100 of FIG. 1. Mobile devices 802 aand 802 b can, for example, communicate over one or more wired and/orwireless networks 810 in data communication. For example, a wirelessnetwork 812, e.g., a cellular network, can communicate with a wide areanetwork (WAN) 814, such as the Internet, by use of a gateway 816.Likewise, an access device 818, such as an 802.11g wireless accessdevice, can provide communication access to the wide area network 814.

In some implementations, both voice and data communications can beestablished over wireless network 812 and the access device 818. Forexample, mobile device 802 a can place and receive phone calls (e.g.,using voice over Internet Protocol (VoIP) protocols), send and receivee-mail messages (e.g., using Post Office Protocol 3 (POP3)), andretrieve electronic documents and/or streams, such as web pages,photographs, and videos, over wireless network 812, gateway 816, andwide area network 814 (e.g., using Transmission ControlProtocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)).Likewise, in some implementations, the mobile device 802 b can place andreceive phone calls, send and receive e-mail messages, and retrieveelectronic documents over the access device 818 and the wide areanetwork 814. In some implementations, mobile device 802 a or 802 b canbe physically connected to the access device 818 using one or morecables and the access device 818 can be a personal computer. In thisconfiguration, mobile device 802 a or 802 b can be referred to as a“tethered” device.

Mobile devices 802 a and 802 b can also establish communications byother means. For example, wireless device 802 a can communicate withother wireless devices, e.g., other mobile devices 802 a or 802 b, cellphones, etc., over the wireless network 812. Likewise, mobile devices802 a and 802 b can establish peer-to-peer communications 820, e.g., apersonal area network, by use of one or more communication subsystems,such as the Bluetooth™ communication devices. Other communicationprotocols and topologies can also be implemented.

The mobile device 802 a or 802 b can, for example, communicate with oneor more services 830 and 840 over the one or more wired and/or wirelessnetworks. For example, one or more location services 830 can determineone or more location identifiers of wireless access gateways (celltowers or wireless access points) and latitude and longitude coordinatesassociated with the location identifiers, and provide the one or morelocation identifiers to mobile devices 802 a and 802 b for determiningcurrent locations mobile devices 802 a and 802 b using the locationidentifiers. One or more geofence services 840 can receive a requestfrom a mobile device, and use the location information and context ofthe location information to select one or more geofences for mobiledevices 802 a and 802 b. The geofence services 840 can provide contentrelated to the selected geofences to mobile devices 802 a and 802 b.

Geofence services 840 can, for example, provide user interface for usersto create and configure geofences, select geofences for mobile devices802 a and 802 b based on locations of mobile devices 802 a and 802 b andcontexts of the locations, and provide content related to the selectedgeofences to mobile devices 802 a and 802 b.

Mobile device 802 a or 802 b can also access other data and content overthe one or more wired and/or wireless networks. For example, contentpublishers, such as news sites, Really Simple Syndication (RSS) feeds,web sites, blogs, social networking sites, developer networks, etc., canbe accessed by mobile device 802 a or 802 b. Such access can be providedby invocation of a web browsing function or application (e.g., abrowser) in response to a user touching, for example, a Web object.

Exemplary Architecture of a Server for Context-based Reverse Geocoding

FIG. 9 is a block diagram of an exemplary system architecture forimplementing the features and operations of selective locationdetermination on a server. Other architectures are possible, includingarchitectures with more or fewer components. In some implementations,architecture 900 includes one or more processors 902 (e.g., dual-coreIntel® Xeon® Processors), one or more output devices 904 (e.g., LCD),one or more network interfaces 906, one or more input devices 908 (e.g.,mouse, keyboard, touch-sensitive display) and one or morecomputer-readable mediums 912 (e.g., RAM, ROM, SDRAM, hard disk, opticaldisk, flash memory, etc.). These components can exchange communicationsand data over one or more communication channels 910 (e.g., buses),which can utilize various hardware and software for facilitating thetransfer of data and control signals between components.

The term “computer-readable medium” refers to any medium thatparticipates in providing instructions to processor 902 for execution,including without limitation, non-volatile media (e.g., optical ormagnetic disks), volatile media (e.g., memory) and transmission media.Transmission media includes, without limitation, coaxial cables, copperwire and fiber optics.

Computer-readable medium 912 can further include operating system 914(e.g., Mac OS® server, Windows® NT server), network communication module916, database interface 920, data collection module 930, datadistribution module 940, and location calculation subsystem 950. Datacollection module 930, data distribution module 940, and geofenceselection module 950 can be used to implement functions context-basedreverse geocoding. Operating system 914 can be multi-user,multiprocessing, multitasking, multithreading, real time, etc. Operatingsystem 914 performs basic tasks, including but not limited to:recognizing input from and providing output to devices 906, 908; keepingtrack and managing files and directories on computer-readable mediums912 (e.g., memory or a storage device); controlling peripheral devices;and managing traffic on the one or more communication channels 910.Network communications module 916 includes various components forestablishing and maintaining network connections (e.g., software forimplementing communication protocols, such as TCP/IP, HTTP, etc.).Database interface 920 can include interfaces to one or more databases(e.g., gateway data store 422 and geofence data store 424) on a filesystem. The data stores can be organized under a hierarchical folderstructure, the folders mapping to directories in the file system. Datacollection module 930 can collect location data of wireless accessgateways, definition of one or more geofences, as well as informationrelated to the geofences. Geofence selection module 940 can receiverequest for geofence information, select one or more geofences based onlocation information and context of the location information in therequest, and identify content associated with the selected geofences.Data distribution module 950 can send information of the selectedgeofences and the identified content to a requesting device.

Architecture 900 can be included in any device capable of hosting adatabase application program. Architecture 900 can be implemented in aparallel processing or peer-to-peer infrastructure or on a single devicewith one or more processors. Software can include multiple softwarecomponents or can be a single body of code.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language (e.g., Objective-C, Java), includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, a browser-based web application, or other unit suitable foruse in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors orcores, of any kind of computer. Generally, a processor will receiveinstructions and data from a read-only memory or a random access memoryor both. The essential elements of a computer are a processor forexecuting instructions and one or more memories for storing instructionsand data. Generally, a computer will also include, or be operativelycoupled to communicate with, one or more mass storage devices forstoring data files; such devices include magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; andoptical disks. Storage devices suitable for tangibly embodying computerprogram instructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such as EPROM,EEPROM, and flash memory devices; magnetic disks such as internal harddisks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communications network.Examples of communications networks include, e.g., a LAN, a WAN, and thecomputers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork. The relationship of client and server arises by virtue ofcomputer programs running on the respective computers and having aclient-server relationship to each other.

A number of implementations of the invention have been described.Nevertheless, it will be understood that various modifications can bemade without departing from the spirit and scope of the invention. Forexample, locations of a mobile device, when uncertainty is involved, arerepresented as circles in the figures. The actual shape of a location ofthe mobile device can have many geometric form (e.g., polygons,ellipses, or other shapes).

What is claimed is:
 1. A method comprising: receiving, by one or more computers, a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: determining a fence size for each of the two or more geofences; calculating match scores measuring matches between the fence sizes and the pattern of movement of the mobile device; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 2. The method of claim 1, comprising: providing an intersection of the current location of the mobile device and the geofenced area enclosed in the selected geofence as a refined current location of the mobile device to the mobile device for display.
 3. The method of claim 1, wherein each of the one or more geofences comprises a virtual perimeter enclosing a geofenced area, the geofenced area corresponding to a geographic area.
 4. The method of claim 1, wherein the context comprises at least one of a speed of movement of the mobile device, a trajectory of the mobile device, and a moving direction of the mobile device.
 5. The method of claim 1, wherein selecting the geofence based on the match scores comprises: determining a specified fence size that corresponds to a traveling speed of the mobile device; and selecting a geofence whose fence size is closest to the specified fence size.
 6. The method of claim 1, wherein: each of the two or more geofences is associated with an address; and determining that the mobile device is located in the geofenced area enclosed by the selected geofence comprises determining that the mobile device is located at the address associated with the geofence.
 7. The method of claim 6, wherein the address is one of a neighborhood name, a street name, and a landmark name.
 8. The method of claim 1, wherein the current location of the mobile device comprises a latitude, a longitude, and an altitude of the mobile device.
 9. The method of claim 1, wherein the current location has a size corresponding to an accuracy.
 10. The method of claim 9, wherein the accuracy comprises a horizontal accuracy and a vertical accuracy.
 11. The method of claim 9, comprising determining the accuracy using characteristics of a technology used for determining the current location.
 12. A system comprising: one or more processors; and a non-transitory storage device storing computer instructions operable to cause the one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device and a horizontal accuracy of the current location; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: determining a fence size for each of the two or more geofences; calculating match scores measuring matches between the fence sizes and the pattern of movement of the mobile device; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 13. The system of claim 12, wherein selecting the geofence from the two or more geofences using the context comprises comparing the pattern of movement in the context with one or more selection criteria of the two or more geofences.
 14. The system of claim 12, the operations comprising providing content related to the geofence to the mobile device.
 15. A non-transitory storage device storing computer instructions operable to cause one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device and a horizontal accuracy of the current location; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: determining a fence size for each of the two or more geofences; calculating match scores measuring matches between the fence sizes and the pattern of movement of the mobile device; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 16. The non-transitory storage device of claim 15, wherein the pattern of movement comprises a series of geofences that the mobile device has previously crossed.
 17. The non-transitory storage device of claim 15, wherein selecting the geofence from the two or more geofences using the context further comprises selecting the geofence based on the horizontal accuracy of the current location.
 18. The non-transitory storage device of claim 15, wherein the horizontal accuracy is determined using one of a global positioning system (GPS), triangulation using locations of wireless access points of a wireless local area network (WLAN), and triangulation using locations of cell towers of a cellular communications network.
 19. The non-transitory storage device of claim 15, wherein selecting the geofence from the two or more geofences using the context comprises selecting the geofence based on a combination of the horizontal accuracy of the current location and the pattern of movement.
 20. A method, comprising: receiving, by one or more computers, a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: identifying one or more historical movement patterns of mobile devices in each of the two or more geofences; calculating match scores measuring matches between the historical movement patterns to the pattern of movement of the mobile device in the context; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 21. A method comprising: receiving, by one or more computers, a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises comparing the pattern of movement in the context with one or more selection criteria of the two or more geofences, including: denying virtual entry of the mobile device into one of the geofences that has a specified selection criterion when the mobile device is physically located in a geographic area enclosed by the one of the geofences having the specified selection criterion upon determining that the pattern of movement in the context fails to meet the specified selection criterion; and selecting a geofence that is different from each geofence that has been denied virtual entry; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 22. A non-transitory storage device storing a computer program product, the product, when executed by one or more processors, causes the one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises comparing the pattern of movement in the context with one or more selection criteria of the two or more geofences, including: denying virtual entry of the mobile device into one of the geofences that has a specified selection criterion when the mobile device is physically located in a geographic area enclosed by the one of the geofences having the specified selection criterion upon determining that the pattern of movement in the context fails to meet the specified selection criterion; and selecting a geofence that is different from each geofence that has been denied virtual entry; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 23. A non-transitory storage device storing a computer program product, the product, when executed by one or more processors, causes the one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: identifying one or more historical movement patterns of mobile devices in each of the two or more geofences; calculating match scores measuring matches between the historical movement patterns to the pattern of movement of the mobile device in the context; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 24. A system comprising: one or more processors; and a non-transitory storage device storing computer instructions operable to cause the one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device and a horizontal accuracy of the current location; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises: identifying one or more historical movement patterns of mobile devices in each of the two or more geofences; calculating match scores measuring matches between the historical movement patterns to the pattern of movement of the mobile device in the context; and selecting the geofence based on the match scores; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence.
 25. A system comprising: one or more processors; and a non-transitory storage device storing computer instructions operable to cause the one or more processors to perform operations comprising: receiving a current location of a mobile device and a context of the current location, the context comprising a pattern of movement of the mobile device and a horizontal accuracy of the current location; identifying, from a plurality of geofences, two or more geofences intersecting the current location; selecting a geofence from the two or more geofences using the context, wherein selecting the geofence comprises comparing the pattern of movement in the context with one or more selection criteria of the two or more geofences, including: denying virtual entry of the mobile device into one of the geofences that has a specified selection criterion when the mobile device is physically located in a geographic area enclosed by the one of the geofences having the specified selection criterion upon determining that the pattern of movement in the context fails to meet the specified selection criterion; and selecting a geofence that is different from each geofence that has been denied virtual entry; and determining that the mobile device is located in a geofenced area enclosed by the selected geofence. 